<!-- /^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)$/
/^((\d{3}[1-9]|\d{2}[1-9]\d|\d[1-9]\d{2}|[1-9]\d{3})(((0[13578]|1[02])(0[1-9]|[12]\d|3[01]))|((0[469]|11)(0[1-9]|[12]\d|30))|(02(0[1-9]|[1]\d|2[0-8]))))|(((\d{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229)$/ -->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        function mydata(txt) {
            arr = txt.split('-')
            let [company, data, serialNumber,...x] = arr
            // 2.正则判断company是否满足都是大写
            let res1 = /^[A-Z]+$/
            let key1 = res1.test(company)
            // 3.正则判断data是否满足格式及年月日
            // 判断首先满足8位数
            let res2 = /^((\d{3}[1-9]|\d{2}[1-9]\d|\d[1-9]\d{2}|[1-9]\d{3})(((0[13578]|1[02])(0[1-9]|[12]\d|3[01]))|((0[469]|11)(0[1-9]|[12]\d|30))|(02(0[1-9]|[1]\d|2[0-8]))))|(((\d{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229)$/
            let key2 = res2.test(data)
            // 1.首先判断基本样式是否满足
            if (arr.length !== 3) {
                console.log(null)
                return
            } else if (!key1) {
                // 2.正则判断company是否满足都是大写
                console.log(null)
                return
            } else if (data.length !== 8) {
                // 判断首先满足8位数
                console.log(null)
                return
            } else if (!key2) {
                // 3.正则判断data是否满足格式及年月日
                console.log(null)
                return
            } else if (serialNumber.length !== 6) {
                // 4.正则判断data是否满足格式及年月日
                console.log(null)
                return
            }
            // 5.打印结果
            let obj = {}
            obj.company = company
            obj.data = data
            obj.serialNumber = serialNumber
            console.log(obj)
        }
        // 调用
        // 第一个满足条件
        mydata('SF-20230217-000001')
        // 第二个满足条件
        mydata('YTO-20230217-000002')
        // 第三个不满足数组长度
        mydata('SF-20230217-000003-TEST')
        // 第三个不满足数组长度
        mydata('SF-20230217')
        // 第三个不满足数组长度
        mydata('SF-20230217000004')
    </script>
</body>

</html>